# Scene Engine 导演时间线 — Smoke Test
# Phase 3C — 3 个动态镜头验证
# 日期: 2026-07-06

meta:
  title: "Scene Engine Smoke Test 导演时间线"
  description: "仅包含 3 个 scene 的动态镜头验证，不生成完整视频"
  total_duration: 27s
  fps: 15
  resolution: [1080, 1920]

scenes:

  - scene_id: scene_01_hook_error
    duration: 8.0
    fps: 15
    total_frames: 120
    visual_goal: "2000 条数据差点全错 — 震撼+警示"

    entry_motion:
      - time: 0.0-0.8
        action: 红色警告背景轻微闪烁
        animation: bgPulse
        detail: 背景红色光晕从 0 → 0.3 → 0 透明度脉冲
        elements: [.bg-pulse]

    main_motion:
      - time: 0.8-1.8
        action: 大数字 2000 + 条数据 放大出现
        animation: bigNumberScale
        detail: 数字从 scale(0) 到 scale(1)，带轻微 overshoot
        elements: [.big-number]

      - time: 1.8-2.5
        action: 红线划过数字
        animation: redLineSlash
        detail: 红线从左到右斜向切入，伴随红色粒子效果
        elements: [.red-line]

      - time: 2.5-5.5
        action: 四个缺失字段卡片依次弹出
        animation: cardStagger
        detail: |
          卡片间隔 0.7s，每个卡片从右滑入 + 淡入
          卡片1: 2.5s | 卡片2: 3.2s | 卡片3: 3.9s | 卡片4: 4.6s
        elements: [.card-1, .card-2, .card-3, .card-4]

    highlight_motion:
      - time: 5.5-7.2
        action: 底部结论出现
        animation: conclusionFade
        detail: '"没有真实链接，就不能叫对标" 从底部升起 + 红色背景光晕'
        elements: [.conclusion]

    exit_motion:
      - time: 7.2-8.0
        action: 轻微 zoom out + fade
        animation: finalZoomFade
        detail: 整体缩放 1.0 → 0.95，透明度 1 → 0
        elements: [.scene-wrapper]

    sound_cue: "错误提示音 + 沉重鼓点"
    subtitle_role: "数据异常 — 2000 条数据缺少关键字段"
    risk_guard:
      - 数字放大不要超出安全区域
      - 红色不要过于刺眼导致无法阅读
      - 字段卡片不能重叠

  - scene_id: scene_02_data_gate
    duration: 9.0
    fps: 15
    total_frames: 135
    visual_goal: "数据质量门禁 — 10 个字段全部通过"

    entry_motion:
      - time: 0.0-1.0
        action: 标题和绿色 badge 出现
        animation: headerSlideIn
        detail: Badge 从顶部滑入，标题字逐渐显现
        elements: [.badge, .title]

    main_motion:
      - time: 1.0-5.5
        action: 10 个字段逐项打勾
        animation: checkStagger
        detail: |
          每行从左侧滑入，✓ 图标从灰变绿
          单字段动画 0.4s，间隔 0.35s
          总时间: 10 × (0.4 + 0.35) ≈ 7.5s → 压缩至 4.5s
        elements: [.field-group]

    highlight_motion:
      - time: 5.5-7.0
        action: 全部通过按钮亮起
        animation: passButtonGlow
        detail: 绿色按钮从暗 → 亮，边框脉冲
        elements: [.btn-pass]

      - time: 7.0-8.4
        action: READY FOR TOP20 亮起
        animation: readyGlow
        detail: 金色按钮闪烁 + glow 扩散
        elements: [.btn-ready]

    exit_motion:
      - time: 8.4-9.0
        action: 轻微 glow transition
        animation: glowPulse
        detail: 整体亮度脉冲作为过渡
        elements: [.scene-wrapper]

    sound_cue: "轻快的科技提示音 + 逐项完成音效"
    subtitle_role: "10 项数据检查全部通过，进入 TOP20 候选池"
    risk_guard:
      - 10 个字段逐项太快会导致看不清
      - 按钮亮起要足够明显
      - 保持绿色调一致

  - scene_id: scene_03_download_success
    duration: 10.0
    fps: 15
    total_frames: 150
    visual_goal: "Top10 视频全部下载成功 — 成就感"

    entry_motion:
      - time: 0.0-1.0
        action: 下载管理器标题出现
        animation: titleSlideIn
        detail: 蓝色 badge 从顶部滑入，标题字放大出现
        elements: [.badge, .title, .subtitle]

    main_motion:
      - time: 1.0-7.0
        action: 10 条下载进度条依次从 0 到 100%
        animation: progressStagger
        detail: |
          每条进度条 0% → 100%
          单条动画 0.8s，间隔 0.45s
          10 条总时间 ≈ 8.0s → 压缩至 6.0s
          100% 时显示绿色 done 标记
        elements: [.progress-rows]

    highlight_motion:
      - time: 7.0-8.5
        action: 10/10 下载成功放大
        animation: successCountScale
        detail: '"10/10 下载成功" 放大 pulsate，金色 glow'
        elements: [.success-count]

      - time: 8.5-9.5
        action: 安全提示出现
        animation: safetyFade
        detail: '"仅用于分析，不搬运内容" 从底部淡入'
        elements: [.safety-notice]

    exit_motion:
      - time: 9.5-10.0
        action: fade out
        animation: finalFadeOut
        detail: 整体淡出到黑
        elements: [.scene-wrapper]

    sound_cue: "下载完成音效 + 成就感上升旋律"
    subtitle_role: "Top10 已完成下载，进入分析阶段"
    risk_guard:
      - 进度条动得太快看不清数字
      - 10 条同时动画不要卡
      - 安全提示不能喧宾夺主
